設定した CloudWatch Alarm をテストする方法
困っていた内容
障害テストの一環として設定している CloudWatch Alarm を実際に意図した通り動作するかを検証しておきたい。
どう対応すればいいの?
Alarm を実際に実行させるには、2つ方法があります。
- 閾値を本来と異なるすぐに Alarm が実行される値へ変更を行う
- AWS CLI
cloudwatch set-alarm-state
を利用してステータスを強制的に変更し Alarm 実行させる
もう一つとしては実際に Alarm 実行条件を満たす状況を発生させるのが想定されますが EC2 CPUUtilization などであればコマンドで再現可能ですが、コストが発生するレベルで手間をかけてあげなければならないメトリクスも想定されます。 またステータスチェックなど利用者側ではコントロール不可のメトリクスも存在します。現実的ではないケースもあります。
上記1 でも大半のケースで適用されますが、閾値の戻し漏れがリスクとして残ります。状況によって取捨選択ではありますが、今回は上記2 を紹介させていただきます。
Alarm 作成
以下のような Alarm があったとします。実行のアクションはメール通知としています。
ステータスを変更
参考情報を元に以下のように Alarm 名と変更したいステータス(ALARM)、コメントを入力して実行します。
$ aws cloudwatch set-alarm-state --alarm-name blog-alarm-test --state-value ALARM --state-reason "test"
実行確認
マネジメントコンソール上の CloudWatch Alarm では アラーム状態 となっています。
アクションとして設定していたメールも通知されました。